package com.cskaoyan.javase.thread._6pool;

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;

/**
 *
 * @since 15:57
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class Demo {
    public static void main(String[] args) {
        // 特点:
        // 1.创建一个线程数量会自动扩容的线程池
        // 2.每当需要执行一个新任务时，有活跃的线程就使用该线程，否则就新建一条线程。
        // 3.使用完毕后的线程会回归线程池，如果这个线程在60秒之后依旧空闲，那么就会被移除
        // ExecutorService newCachedThreadPool()
        ExecutorService executor = Executors.newCachedThreadPool();

        // 向线程池提交任务,线程池中的线程就会执行这些任务
        // ExecutorService表示线程池对象,它下面有两个提交任务的成员方法
        // Future<?> submit(Runnable task) 提交一个Runnable任务
        executor.submit(() -> {
            for (int i = 0; i < 10; i++) {
                System.out.println("hello world!");
                try {
                    TimeUnit.SECONDS.sleep(1);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        });
        // Future<T> submit(Callable<T> task)

    }
}